home *** CD-ROM | disk | FTP | other *** search
/ Chip 2011 November / CHIP_2011_11.iso / Programy / Inne / Gry / Carnage_Contest / scripts / CC Original / weapons / Pac-Man.lua < prev    next >
Text File  |  2010-08-31  |  5KB  |  165 lines

  1. --------------------------------------------------------------------------------
  2. -- Weapon Pac-Man + Projectile Pac-Man
  3. -- Original Carnage Contest Weapon
  4. -- Script by DC, May 2010, www.UnrealSoftware.de
  5. --------------------------------------------------------------------------------
  6.  
  7. -- Setup Tables
  8. if cc==nil then cc={} end
  9. cc.pacman={}
  10. cc.pacman.pacman={}
  11.  
  12. -- Load & Prepare Ressources
  13. cc.pacman.gfx_wpn0=loadgfx("weapons/pacman0.png")                -- Weapon Image Frame 0
  14. setmidhandle(cc.pacman.gfx_wpn0)
  15. cc.pacman.gfx_wpn1=loadgfx("weapons/pacman1.png")                -- Weapon Image Frame 1
  16. setmidhandle(cc.pacman.gfx_wpn1)
  17. cc.pacman.sfx_attack=loadsfx("pacman.ogg")                        -- Attack Sound
  18.  
  19. --------------------------------------------------------------------------------
  20. -- Weapon: Pac-Man
  21. --------------------------------------------------------------------------------
  22.  
  23. cc.pacman.id=addweapon("cc.pacman","Pac-Man",cc.pacman.gfx_wpn0,0,3)    -- Add Weapon (0 uses, first in round 3)
  24.  
  25. function cc.pacman.draw()                                                -- Draw
  26.     -- Draw
  27.     if weapon_shots<=0 then
  28.         -- Info
  29.         hudinfo("Hit [Space] once to launch Pac-Man!")
  30.         if getplayeraction(0)==0 then
  31.             setblend(blend_alpha)
  32.             setalpha(1)
  33.             setcolor(255,255,255)
  34.             setscale(getplayerdirection(0),1)
  35.             setrotation(-(20+math.sin(os.clock()*15)*5)*getplayerdirection(0))
  36.             drawimage(cc.pacman.gfx_wpn0,getplayerx(0)+getplayerdirection(0)*7,getplayery(0)-5)
  37.             -- HUD Crosshair
  38.             hudcrosshair(6,3)
  39.         end
  40.     end
  41. end
  42.  
  43. function cc.pacman.attack(attack)                                    -- Attack
  44.     if (weapon_shots<=0) then
  45.         -- Fire a projectile (on release/full charge)
  46.         if (attack==1) then
  47.             -- No more weapon switching!
  48.             useweapon(0)
  49.             -- No more player control!
  50.             playercontrol(0)
  51.             -- Set Round Time (15 sec)
  52.             secondsleft=math.floor(getframesleft()/50)
  53.             changeturntime(15-secondsleft)
  54.             -- Launch
  55.             weapon_shots=weapon_shots+1
  56.             id=createprojectile(cc.pacman.pacman.id)
  57.             projectiles[id]={}
  58.             -- Set initial position of projectile
  59.             projectiles[id].x=getplayerx(0)+getplayerdirection(0)*8
  60.             projectiles[id].y=getplayery(0)-3
  61.             -- Set direction of projectile
  62.             projectiles[id].dir=getplayerdirection(0)
  63.             -- Animation
  64.             projectiles[id].frame=0
  65.             projectiles[id].timer=0
  66.             -- Timer
  67.             weapon_timer=50
  68.         end
  69.     end
  70. end
  71.  
  72. --------------------------------------------------------------------------------
  73. -- Projectile: Pac-Man
  74. --------------------------------------------------------------------------------
  75.  
  76. cc.pacman.pacman.id=addprojectile("cc.pacman.pacman")            -- Add Projectile
  77.  
  78. function cc.pacman.pacman.draw(id)                                -- Draw
  79.     -- Setup draw mode
  80.     setblend(blend_alpha)
  81.     setalpha(1)
  82.     setcolor(255,255,255)
  83.     setscale(1,1)
  84.     if projectiles[id].dir==-1 then
  85.         setrotation(-180)
  86.     elseif projectiles[id].dir==1 then
  87.         setrotation(0)
  88.     elseif projectiles[id].dir==-2 then
  89.         setrotation(-90)
  90.     elseif projectiles[id].dir==2 then
  91.         setrotation(90)
  92.     end
  93.     -- Draw projectile
  94.     if projectiles[id].frame==0 then
  95.         drawimage(cc.pacman.gfx_wpn0,projectiles[id].x,projectiles[id].y-2)
  96.     else
  97.         drawimage(cc.pacman.gfx_wpn1,projectiles[id].x,projectiles[id].y-2)
  98.     end
  99.     -- Draw Arrow if out of Screen
  100.     outofscreenarrow(projectiles[id].x,projectiles[id].y)
  101.     -- Info
  102.     hudinfo("Control Pac-Man with your arrow keys or W/A/S/D!")
  103. end
  104.  
  105. function cc.pacman.pacman.update(id)                            -- Update
  106.     -- Timer
  107.     weapon_timer=weapon_timer-1
  108.     projectiles[id].timer=projectiles[id].timer+1
  109.     -- Animation
  110.     if projectiles[id].timer>6 then
  111.         projectiles[id].timer=0
  112.         projectiles[id].frame=1-projectiles[id].frame
  113.         -- Bite
  114.         if projectiles[id].frame==0 then
  115.             playsound(cc.pacman.sfx_attack,0)
  116.             if collision(cc.pacman.gfx_wpn1,projectiles[id].x,projectiles[id].y,1,0,0)==1 then
  117.                 -- Eat Terrain
  118.                 terraincircle(projectiles[id].x,projectiles[id].y,17,0x00000000)
  119.             end
  120.         end
  121.     end
  122.     -- Control
  123.     if keydown(key_left)==1 then projectiles[id].dir=-1 end
  124.     if keydown(key_right)==1 then projectiles[id].dir=1 end
  125.     if keydown(key_up)==1 then projectiles[id].dir=-2 end
  126.     if keydown(key_down)==1 then projectiles[id].dir=2 end
  127.     -- Move
  128.     if projectiles[id].dir==-1 then
  129.         projectiles[id].x=projectiles[id].x-1
  130.     elseif projectiles[id].dir==1 then
  131.         projectiles[id].x=projectiles[id].x+1
  132.     elseif projectiles[id].dir==-2 then
  133.         projectiles[id].y=projectiles[id].y-1
  134.     elseif projectiles[id].dir==2 then
  135.         projectiles[id].y=projectiles[id].y+1
  136.     end
  137.     -- Water
  138.     if (projectiles[id].y)>getwatery()-20 then
  139.         -- Effects
  140.         particle(p_waterhit,projectiles[id].x,projectiles[id].y)
  141.         playsound(sfx_hitwater3)
  142.         -- Free projectile
  143.         freeprojectile(id)
  144.         -- End Turn
  145.         endturn()
  146.         return
  147.     -- Timer / Explode
  148.     elseif getframesleft()<5 or (weapon_timer<=0 and keydown(key_attack)==1) then
  149.         -- Splatter
  150.         playsound(sfx_splatter2)
  151.         -- Cause damage
  152.         arealdamage(projectiles[id].x,projectiles[id].y,60,30)
  153.         -- Destroy terrain
  154.         terrainexplosion(projectiles[id].x,projectiles[id].y,50,1)
  155.         -- Crater
  156.         grey=math.random(0,40)
  157.         terrainalphaimage(gfx_crater100,projectiles[id].x,projectiles[id].y,math.random(6,9)*0.1,grey,grey,grey)
  158.         -- Free projectile
  159.         freeprojectile(id)
  160.         -- End Turn
  161.         endturn()
  162.     end
  163.     -- Scroll to projectile
  164.     scroll(projectiles[id].x,projectiles[id].y)
  165. end